﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;

using DQYT.HTDZ.OracleDAL;
using DQYT.HTDZ.Model;
using DQYT.HTDZ.Common;

namespace DQYT.HTDZ.BLL
{
    public class TB_Template_Menu_BLL
    {
        private TB_Template_Menu_DAL dal = new TB_Template_Menu_DAL();

        public DataTable QueryTree(int parentId)
        {
            return dal.QueryTree(parentId);
        }

        public List<TB_Template_Menu_Model> QueryTreeList(int parentId)
        {
            /*
             * 备注：treegrid 使用说明
             * 时间：2013年11月13日 22:04:23
             * 1. 每个节点都需要有 _parentId 字段
             * 2. 目录的 state=closed, 叶子的 state=open
             * 3. 根节点的 _parentId 为 0, state 为null
             */

            DataTable table = dal.QueryTree(parentId);

            List<TB_Template_Menu_Model> modelList = new List<TB_Template_Menu_Model>();

            foreach (DataRow item in table.Rows)
            {
                TB_Template_Menu_Model model = new TB_Template_Menu_Model();
                model.TMP_ID = ParseHelper.Parse<int>(item["tmp_id"]);
                model.TMP_MC = ParseHelper.Parse<string>(item["tmp_mc"]);
                model.TMP_MS = ParseHelper.Parse<string>(item["tmp_ms"]);
                model.TMP_SX = ParseHelper.Parse<int>(item["tmp_sx"]);
                model.TMP_URL = ParseHelper.Parse<string>(item["tmp_url"]);
                model.TMP_ZT = ParseHelper.Parse<int>(item["tmp_zt"]);
                model.TYP_CODE = ParseHelper.Parse<int>(item["typ_code"]);
                if (model.TMP_ID != parentId)
                {
                    model.state = ParseHelper.Parse<string>(item["typ_code"], "20").Equals("30") ? "open" : "closed";
                    model._parentId = ParseHelper.Parse<int>(item["tmp_fid"]);
                }
                modelList.Add(model);
            }

            return modelList;
        }

        public TB_Template_Menu_Model QueryItem(int id)
        {
            DataTable table = dal.QueryItem(id);

            if(table == null || table.Rows.Count == 0)
                return null;
            TB_Template_Menu_Model model = new TB_Template_Menu_Model();
            foreach (DataRow item in table.Rows)
            {
                
                model.TMP_ID = ParseHelper.Parse<int>(item["tmp_id"]);
                model.TMP_MC = ParseHelper.Parse<string>(item["tmp_mc"]);
                model.TMP_MS = ParseHelper.Parse<string>(item["tmp_ms"]);
                model.TMP_SX = ParseHelper.Parse<int>(item["tmp_sx"]);
                model.TMP_URL = ParseHelper.Parse<string>(item["tmp_url"]);
                model.TMP_ZT = ParseHelper.Parse<int>(item["tmp_zt"]);
                model.TYP_CODE = ParseHelper.Parse<int>(item["typ_code"]);
                break;
            }
            return model;
        }

        public bool AddItem(TB_Template_Menu_Model model)
        {
            bool ok = true;
            try
            {
                ok = dal.AddItem(model);
            }
            catch (System.Exception ex)
            {
                ok = false;
            }
            return ok;
        }

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id">条目ID</param>>
        /// <returns></returns>
        public bool DeleteItem(int id, ref string errMsg)
        {
            bool success = true;
            try
            {
                dal.DeleteItem(id);
            }
            catch (System.Exception ex)
            {
                success = false;
                errMsg = ex.Message;
            }
            return success;
        }
    }
}
